﻿<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
    <META NAME="save" CONTENT="history" />
    <title>使用带参数的 SQL 语句</title>
    
    <link rel="stylesheet" type="text/css" href="../local/Classic.css">
      
    </link>
    
    <script src="../local/script.js">
      
    </script><script src="../local/script_main.js">&amp;nbsp;</script>
  </head>
  <body>
    <!--Topic built:04/01/2010 05:03:28-->

    
    
    
    
    
    
    
    
    
    <div id="header">
      <table width="100%" id="topTable"><tr>
          <td align="left">
            <span id="headerBold">使用带参数的 SQL 语句</span>
          </td>
          <td align="right">
            
          </td>
        </tr></table>
      
      
      
    </div>
    <div id="mainSection">
      
        
        
    <font color="DarkGray">
      
    </font>
    <p />
    
    <p />
  
        <div id="introductionSection" class="section">
    <p>若要使用包含 IN 参数的 SQL 语句处理 SQL Server 数据库中的数据，可使用 <a href="a8481c06-fbba-432b-8c69-4f4619c20ad4.htm">SQLServerPreparedStatement</a> 类的 <a href="dfff3358-f391-4af6-84c1-b94c029f506d.htm">executeQuery</a> 方法返回包含所请求数据的 <a href="eaffcff1-286c-459f-83da-3150778480c9.htm">SQLServerResultSet</a>。若要执行此操作，必须首先使用 <a href="937292a6-1525-423e-a2b2-a18fd34c2893.htm">SQLServerConnection</a> 类的 <a href="bd4e4085-f704-4a73-b6a7-7d443d564728.htm">prepareStatement</a> 方法创建一个 <b>SQLServerPreparedStatement</b> 对象。</p>
    <p>构造 SQL 语句时，可使用 ?（问号）字符指定 IN 参数，该问号将用作随后传递到 SQL 语句中的参数值的占位符。可以使用 <b>SQLServerPreparedStatement</b> 类的 setter 方法之一为参数指定值。使用的 setter 方法由要传递到 SQL 语句中的值的数据类型确定。</p>
    <p>向 setter 方法传递值时，不仅需要指定要在 SQL 语句中使用的实际值，还必须指定参数在 SQL 语句中的序数位置。例如，如果 SQL 语句包含单个参数，则其序数值为 1。如果语句包含两个参数，则第一个序数值为 1，而第二个序数值为 2。</p>
    <p>在下面的实例中，将向此函数传递 SQL Server 2005 AdventureWorks 示例数据库的打开连接，并会构造一条预定义 SQL 语句，使用一个字符串参数值运行该语句，然后从结果集中读取结果。</p>
    <div class="sampleCode"><span codeLanguage="other"><pre>public static void executeStatement(Connection con) {
   try {
      String SQL = "SELECT LastName, FirstName FROM Person.Contact WHERE LastName = ?";
      PreparedStatement pstmt = con.prepareStatement(SQL);
      pstmt.setString(1, "Smith");
      ResultSet rs = pstmt.executeQuery();

      while (rs.next()) {
         System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
      }
      rs.close();
      pstmt.close();
   }
   catch (Exception e) {
      e.printStackTrace();
   }
}
</pre></span></div>
  </div><span id="seeAlsoSpan"><h1 class="heading">请参阅</h1></span><div id="seeAlsoSection" class="section" name="collapseableSection"><a href="fe28f48a-e1bc-48ff-a5e7-c24cd6e5ecc7.htm">使用 SQL 语句</a><br /><br /></div><!--[if gte IE 5]>
			<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
		<![endif]-->
      <div id="footer" class="section">
        
		<hr />
		
		<span id="fb" class="feedbackcss">
			
			
		</span>
		
		<a href="9bad553b-9e70-4696-8499-2e35f772a1e0.htm">
			
			© 2010 Microsoft Corporation。保留所有权利。
		</a>
 	
	
      </div>
    </div>
  </body>
</html>